package com.dd.cloud.user.entity.doctor;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dd.cloud.common.annotate.FileSuffix;
import com.gitee.sunchenbin.mybatis.actable.annotation.Column;
import com.gitee.sunchenbin.mybatis.actable.annotation.Table;
import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 医生详情表
 * </p>
 *
 * @author czg
 * @since 2022-04-27
 */
@Data
@EqualsAndHashCode
@Accessors(chain = true)
@Table(comment = "医生信息表")
public class DoctorDetail implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 医生信息表
     */
    @TableId(value = "id", type = IdType.AUTO)
    @Column(isKey = true, isAutoIncrement = true)
    private Integer id;

    /**
     * 医生ID
     */
    @Column(comment = "医生id")
    private Integer doctorId;

    /**
     * 身份证号码
     */
    @Column(length = 18, comment = "身份证号码")
    private String idCard;

    /**
     * 姓名
     */
    @Column(length = 20, comment = "姓名")
    private String name;

    /**
     * 个人简介
     */
    @Column(length = 300, comment = "个人简介")
    private String introduction;

    /**
     * 手机号
     */
    @Column(length = 11, comment = "手机号")
    private String mobileNumber;

    /**
     * 头像地址
     */
    @Column(length = 500, comment = "头像地址")
    @FileSuffix
    private String avatar;

    /**
     * 机构名称
     */
    @Column(length = 50, comment = "机构名称")
    private String organization;

    /**
     * 科室
     */
    @Column(length = 20, comment = "科室")
    private String department;

    /**
     * 擅长病种
     */
    @Column(length = 200, comment = "擅长病种")
    private String goodAt;

    /**
     * 医生技术职称
     */
    @Column(length = 20, comment = "医生技术职称")
    private String proCertificate;

    /**
     * 出生日期
     */
    @Column(comment = "出生日期")
    private LocalDate birthDate;

    /**
     * 年龄
     */
    @Column(length = 3, comment = "年龄")
    private Integer age;

    /**
     * 性别
     */
    @Column(length = 2, comment = "性别")
    private String sex;

    /**
     * 省份
     */
    @Column(length = 10, comment = "省份")
    private String province;

    /**
     * 城市
     */
    @Column(length = 10, comment = "城市")
    private String city;

    /**
     * 区县
     */
    @Column(length = 10, comment = "区县")
    private String district;

    /**
     * 地址
     */
    @Column(length = 50, comment = "地址")
    private String addr;

    /**
     * 创建时间
     */
    @Column(comment = "创建时间")
    private LocalDateTime createDate;

    /**
     * 资料状态 1正常 -1删除
     */
    @Column(comment = "资料状态 1正常 -1删除")
    private Integer status;

    /**
     * 医师资格证书编号
     */
    @Column(length = 30, comment = "医师/乡村资格证书编号")
    private String quaCertificateNo;

    /**
     * 医师资格证书图片
     */
    @Column(comment = "医师资格证书图片", length = 256)
    private String quaCertificatePhoto;

    /**
     * 医师资格证书获得时间
     */
    @Column(comment = "医师/乡村资格证书获得时间")
    private LocalDate quaCertificateDate;

    /**
     * 医师执业证书编号
     */
    @Column(length = 30, comment = "医师执业证书编号")
    private String praCertificateNo;

    /**
     * 医师执业证书图片地址
     */
    @Column(length = 256, comment = "医师执业证书图片地址")
    private String praCertificatePhoto;

    /**
     * 医师职称证书图片地址
     */
    @Column(length = 1024, comment = "医师职称证书图片地址")
    private String proCertificatePhoto;

    /**
     * 药品费用比例
     */
    @Column(length = 3, comment = "药品费用比例")
    private Integer drugScale;

    /**
     * 诊疗费
     */
    @Column(length = 4, comment = "诊疗费")
    private Integer consultationFee;

    /**
     * 资质类型
     */
    @Column(length = 4, comment = "资质类型 1.乡村医生 2.执业医师 3.医学生认证 4.中药师 5.医生爱好者")
    private Integer qualificationType;

    /**
     * 证书类型
     */
    @Column(length = 4, comment = "1.乡村医生执业证,2.传统医学师承证出师证,3.传统医学医术确有专长证,4.乡镇执业助理医师," + "5.乡村全科执业助理医师证,6.执业助理医师证,7.中医（专长）医师资格证,8.中医康复理疗师,9.其他")
    private Integer certificateType;

    /**
     * 上传证件
     */
    @Column(type = MySqlTypeConstant.TEXT, comment = "乡村医生上传证书,逗号拼接")
    private String certificateUrl;

    /**
     * 证书名称
     */
    @Column(length = 32, comment = "其他/证书名称")
    private String certificateName;

    /**
     * 卫健委照片
     */
    @Column(length = 1024, comment = "卫健委照片")
    private String healthCommitteePhoto;

    /**
     * 医生执业证书获得时间
     */
    @Column(comment = "执业证书获取时间")
    private LocalDate praCertificateDate;

    /**
     * 医生工号
     */
    @Column(length = 128, comment = "医生工号")
    private String workCard;

    /**
     * 医生属性
     */
    @Column(length = 128, comment = "属性")
    private String attribute;

    /**
     * 医生类型
     */
    @Column(length = 32, comment = "医生类型")
    private String doctorType;

    /**
     * 专业技术职务类别
     */
    @Column(length = 32, comment = "专业技术职位类别")
    private String technicalCategories;

    /**
     * 专业技术职务
     */
    @Column(length = 128, comment = "专业技术职务")
    private String professionalTechnicians;

    /**
     * 执业范围
     */
    @Column(length = 256, comment = "执业范围")
    private String practiceArea;

    /**
     * 参加工作时间
     */
    @Column(comment = "参加工作时间")
    private LocalDate workDate;

    /**
     * 身份证正面
     */
    @Column(length = 128, comment = "身份证正面")
    private String idCardFront;

    /**
     * 身份证反面
     */
    @Column(length = 128, comment = "身份证反面")
    private String idCardBack;

    /**
     * 学历
     */
    @Column(comment = "学历", length = 128)
    private String educationBackground;

    /**
     * 专业名称
     */
    @Column(comment = "专业名称", length = 128)
    private String professionalTitle;

    /**
     * 爱好科室
     */
    @Column(comment = "爱好科室", length = 256)
    private String hobbyDepartment;

    /**
     * 学校
     */
    @Column(comment = "学校", length = 30)
    private String school;
}
